package ejercicio.practica4;


import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
import java.util.Scanner;

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author manolo
 */
public class UsaProdMatConcurrente {

    public static void main(String[] args) throws InterruptedException {
        Random rm = new Random();
        int m,n;
        Scanner teclado = new Scanner(System.in);

        System.out.println("Introduzca la dimensión de las filas de la matriz A: ");
        m = teclado.nextInt();
        System.out.println("Introduzca la dimensión de las columnas de la matriz A: ");
        n = teclado.nextInt();
        int[][] matrizA = new int[m][n];
        int[] matrizB = new int[n];

        for (int i = 0; i < m; ++i) {
            for (int j = 0; j < n; ++j) {
                matrizA[i][j] = rm.nextInt();
                matrizB[j] = rm.nextInt();
            }
        }

        ProdMatConcurrente[] vectorHilos = new ProdMatConcurrente[m];

        for (int i = 0; i < m; ++i) {
            vectorHilos[i] = new ProdMatConcurrente(m, n, matrizA, matrizB);
            vectorHilos[i].setFila(i);
        }

        Date d = new Date();
        DateFormat df = new SimpleDateFormat("HH:mm:ss:SSS");
        long inicCronom = System.currentTimeMillis(); //se prepara el cronometro
        d.setTime(inicCronom);

        for (int i = 0; i < m; ++i) {
            vectorHilos[i].start();
        }

        long finCronom = System.currentTimeMillis(); //se para el cronometro
        d.setTime(finCronom);
        System.out.println("Acabando trabajo a las " + df.format(d) + " tras " + (finCronom - inicCronom) + " milisegundos");

        for (int i = 0; i < m; ++i) {
            vectorHilos[i].join();
        }

    }

}
